package itheima04;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Properties;

/**
 * @author xxx
 * @date 2020/12/28 22:38
 * @description
 */
public class TestDemo2 {
      public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException {
//        写一个"框架"，不能改变该类的任何代码的前提下，可以帮我们创建任意类的对象，并且执行其中任意方法
//        步骤:
//        1.创建一个配置文件(config.properties),存储键值对  ClassName=domain.Animal MethodName=eat
          FileInputStream fileInputStream=new FileInputStream("day15\\config.properties");
          Properties properties=new Properties();
          properties.load(fileInputStream);
//        2.读取(IO+Properties)配置文件,获取String类型的类名称和方法名称
          String p1=properties.getProperty("ClassName");
          String p2=properties.getProperty("MethodName");

          System.out.println(p1+"---"+p2);

         /* int b=0;
          byte[] bytes=new byte[1024];
          while ((b=fileInputStream.read(bytes))!=-1){
              System.out.println(new String(bytes,0,b));
          }*/

//        3.获取Class类型的对象(三种方式,建议使用第三种forName)
         Class<?> o= Class.forName(p1);
         Method method=o.getMethod(p2);
         Object o1=o.newInstance();
         method.invoke(o1);


          //   6.执行方法对象








    }
}
